#ifndef __GLES2Support_H__
#define __GLES2Support_H__

#include "ConfigOptionMap.h"

namespace PVM
{
	class GLES2RenderSystem;
	
	class GLES2Support
	{
	public:
		GLES2Support() {}
		virtual ~GLES2Support() {}
		
		virtual void addConfig() = 0;
		virtual void setConfigOption(const std::string& name, const std::string& value);
		
		virtual std::string validateConfig() = 0;
		virtual ConfigOptionMap& getConfigOptions(void);
		
		const std::string& getGLVendor(void) const
		{
			return mVendor;
		}
		
		const std::string& getGLVersion(void) const
		{
			return mVersion;
		}
		
		const std::string& getShaderCachePath(void) const
		{
			return mShaderCachePath;
		}
		
		const std::string& getShaderLibraryPath(void) const
		{
			return mShaderLibraryPath;
		}
		
		virtual void initialiseExtensions();
		
		virtual void checkExtension(const std::string& ext) const;
		
		virtual void start() = 0;
		
		virtual void stop() = 0;
		
	private:
		std::string mVersion;
		std::string mVendor;
		std::string mShaderCachePath;
		std::string mShaderLibraryPath;
		
	protected:
		ConfigOptionMap mOptions;
		std::set<std::string>::type extensionList;
	};
}

#endif
